import scrapy

# items 数据结构传递
from scrapy_dytt.items import ScrapyDyttItem

class MvSpider(scrapy.Spider):
    name = 'mv' # 爬取电影天堂数据
    allowed_domains = ['www.ygdy8.net'] # 配置允许访问路径，多页情况，放入域名即可；
    start_urls = ['https://www.ygdy8.net/html/gndy/china/index.html']

    def parse(self, response):
        print('爬取电影天堂数据...')
        # //table[@class="tbspan"]/tbody/tr[2]/td[2]/b/a[2]/text()
        # //table[@class="tbspan"]/tbody/tr[2]/td[2]/b/a[2]/@href
        # 提取标签
        a_list = response.xpath('//div[@class="co_content8"]//tr[2]/td[2]/b/a[2]')
        for a in a_list:
            # 获取电影列表页面 name:电影名称  src:电影详情页面
            name = a.xpath('./text()').extract_first()
            src = a.xpath('./@href').extract_first()
            # 完整详情地址：https://www.ygdy8.net/html/gndy/jddy/20240815/65293.html
            src = 'https://www.ygdy8.net' + src
            print(name, src)

            # 对电影详情页面 发起访问
            # 使用 meta 字典传参将参数 传给下一层；
            yield scrapy.Request(url=src, callback=self.parse_send, meta={'name':name})


    def parse_send(self, response):
        print('访问电影详情页面：', response.url)
        img_src = response.xpath('//div[@class="co_content8"]//img/@src').extract_first()
        print('电影详情图片地址：', img_src)
        # 如何获取 上边的name呢？
        name = response.meta['name']
        print(name)

        # 使用items 数据结构
        data = ScrapyDyttItem(name=name, src=img_src)
        # 并返回给管道 pipelines
        yield data